package com.water_work_form.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.water_work_form.entity.RecordDrugTest;
import com.water_work_form.entity.RecordStorageDrugTest;
import com.baomidou.mybatisplus.extension.service.IService;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 记录——储药池药剂检测记录 服务类
 * </p>
 *
 * @author xuke
 * @since 2023-08-17
 */
public interface RecordStorageDrugTestService extends IService<RecordStorageDrugTest> {

    /**
     * 记录——储药池药剂检测记录 项目查询（三个查询项+分页+排序）
     * @param type 项目类型（type） 若为空则不进行此项查询，否则返回对应type的数据（因为前端页面设计，type基本上不会为空，且有默认值“硫酸铵”）
     * @param current 分页查询 当前页数
     * @param status 项目状态（status） 若为空则不进行此项查询，否则返回对应status的数据
     * @param startSampleDate 取样日期（sample_date）范围查询的开始日期 若为空则不进行此项查询，否则返回sample_date大于startSampleDate的数据
     * @param endSampleDate 取样日期（sample_date） 范围查询的结束日期 若为空则不进行此项查询，否则返回sample_date小于endSampleDate的数据
     * @param size 分页查询 一页展示数据最大量
     * @return 将符合上述查询条件的数据按照 状态（status）、取样日期（sample_date）、取样时间（sample_time）、检测时间（check_time）的前后顺序作为优先级（即状态status优先级最高）进行升序排序（为空则置顶）
     */
    IPage<RecordStorageDrugTest> selectRecordStorageDrugTest(String type, Integer current, String status,
                                                             String startSampleDate, String endSampleDate, Integer size);

    /**
     * 记录——储药池药剂检测记录 基础表数据查询
     * @param type 项目类型 对基础表formula、medical、restriction查询对应项
     * @param name 表名 对基础表form进行对应项查询
     * @return 返回所有查询到的数据，并以基础表名作为键
     */
    Map<String,Object> selectBasicStorageDrugTest(String type, String name);

    void downloadRecordStorageDrugTest(List<RecordStorageDrugTest> recordStorageDrugTestList, String restrictionString, String formulaContentString, String formulaDescriptionString,
                                       String medicalString) throws IOException;
}
